/*
Copyright 2011 Mary Suárez Machado

Este programa es de software libre: usted puede redistribuirlo y/o modificarlo según los términos de la Licencia de Gran pública de GNU como publicado por la Fundación de Software Libre, versión 3 de la Licencia, (o en su opción) cualquier versión posterior.

 Este programa es distribuido en la esperanza que será útil, pero SIN CUALQUIER GARANTÍA; sin aún la garantía implícita de VALOR COMERCIAL O SALUD PARA UN OBJETIVO PARTICULAR. Mirar la Licencia de Gran pública de GNU para más detalles.
*/


#ifndef _TABLA_HUFFMAN_DISTANCIA_H
#define _TABLA_HUFFMAN_DISTANCIA_H

#include <VectorBits.h>

 /**
 *@file TablaHuffmanD.h
 *@brief Interfaz para para trabajar con la tabla de bits adicionales para la codificación de las distancias (huffman)
 *
 */

 /**
 * \class TablaHuffmanD
 *
 * \brief Modulo que representa una tabla de codificación de bits adiccionales de distancias (huffman)
 *         
 * \author Mary Carmen Suárez 
 *
 */
	class TablaHuffmanD
	{
		private:
			int simbolo[32];
			int nbits;
			VectorBits  codificacion[32];
			TablaHuffmanD(const TablaHuffmanD & orig);
			TablaHuffmanD & operator= (const TablaHuffmanD & orig);
		public:
			/**
			@brief Constructor por defecto
			@pos crea la tabla rellena con los valores estandar
			*/
			TablaHuffmanD();	
			/**
			@brief Destructor
			@pos libera toda la memoria reservada
			*/
			~TablaHuffmanD();
			/**
			@brief Escribe la tabla en la salida estandar
			*/
			void Escribir()const;
			/**
			@param d, distancia de la cual queremos la codificacion 
			@return devuelve el codificacion asociada a esa distancia
			*/
			const VectorBits& GetCodificacion (int d) const;
			/**
			@param v, vector de bits del cual queremos la codificacion 
			@return devuelve el codificacion asociada a ese vector
			*/
			int GetSimbolo (const VectorBits & v);
	};

#endif
